#import "drawundo.h"

@interface MoveGraphicsChange(PrivateMethods)

- (BOOL)subsumeIdenticalChange:change;

@end

@implementation MoveGraphicsChange

- initGraphicView:aGraphicView vector:(const NXPoint *)aVector
{
    [super initGraphicView:aGraphicView];
    redoVector.x = aVector->x;
    redoVector.y = aVector->y;
    undoVector.x = -redoVector.x;
    undoVector.y = -redoVector.y;

    return self;
}

- (const char *)changeName
{
    return NXLocalStringFromTable("Operations", "Move", NULL, "The operation of moving a graphical entity.");
}

- changeDetailClass
{
    return [MoveChangeDetail class];
}

- (const NXPoint *)undoVector
{
    return &undoVector;
}

- (const NXPoint *)redoVector
{
    return &redoVector;
}

- (BOOL)subsumeIdenticalChange:change
{
    MoveGraphicsChange	*moveChange;
    
    moveChange = (MoveGraphicsChange *)change;
    undoVector.x += moveChange->undoVector.x;
    undoVector.y += moveChange->undoVector.y;
    redoVector.x += moveChange->redoVector.x;
    redoVector.y += moveChange->redoVector.y;
    
    return YES;
}

@end
